﻿///*
// * GridDataFactory
// * 
// * initial implementation : 20.9.2008
// *
// * Copyright (c) Adam Sida, asida@centrum.cz.
// * All rights reserved.
// * 
// * for license see Petra.Gis.License.txt
// */
//using System;
//using System.IO;
//using System.Collections.Generic;
//using System.Windows.Media.Imaging;
//using Petra.Gis.Geometry.Support;
//using Petra.Gis.Geometry.GridSupport;
//using Petra.Gis.DataServices;
//using Petra.Gis.ImagingServices.Base;


//namespace Petra.Gis.DataServices
//{




//  public static class GridDataFactory
//  {

//    //static GridDataFactory()
//    //{

//    //}





//    //public override bool CanConvertFrom(System.ComponentModel.ITypeDescriptorContext context, Type sourceType)
//    //{
//    //  if (sourceType == typeof(string))
//    //    return true;
//    //  else if


//    //    return false;
//    //}

//    public static GridDataBase Create(Uri fileUri, BoundingBox dataBounds)
//    {
//      try
//      {
//        return createFromFilePath(fileUri, dataBounds);
//      }
//      catch
//      {
//        return null;
//      }
//    }





//    private static GridDataBase createFromFilePath(Uri fileUri, BoundingBox dataBounds)
//    {

//      //prepare decoder...
//      string ext = Path.GetExtension(fileUri.LocalPath).ToLower();
//      Component tmp = null;

//      if (SystemEnvironment.Components.GridDataDecoders.Count == 0)
//        return null;
      
//      foreach (KeyValuePair<string, Component> kvp in SystemEnvironment.Components.GridDataDecoders)
//        if (kvp.Key.ToLower() == ext)
//        {
//          tmp = kvp.Value;
//          break;
//        }

//      if (tmp == null)
//        return null;

//      //try create decoder
//      SimpleBitmapDecoder bd = (SimpleBitmapDecoder)tmp.CreateInstance(
//        new object[]
//        {
//          fileUri.LocalPath, BitmapCreateOptions.DelayCreation, BitmapCacheOption.OnDemand
//        }
//      );

//      return GridData.Create(bd, dataBounds, fileUri);

//      ////GridData gd;

//      ////get fileExtension and 
//      //string fileExtension = pathToFile.Substring(pathToFile.Length - 4);

//      //switch (fileExtension.ToLower())
//      //{
//      //  case ".tif":
//      //  case "tiff":
//      //    return new TiffImageGridData(pathToFile, dataBounds);
//      //  //break;

//      //  case ".bmp":
//      //  case ".jpg":
//      //  case ".png":
//      //  case ".gif":
//      //  case ".cit":
//      //    return new StandardImageGridData(pathToFile, dataBounds);

//      //  //break;
//      //  default:
//      //    throw new NotImplementedException();
//      //}

//    }




//  }
//}
